package br.com.spb.web;

import javax.servlet.http.HttpServletRequest;

import br.com.spb.domain.Estado;
import br.com.spb.domain.Governador;
import br.com.spb.persistence.EstadoDao;
import br.com.spb.persistence.GovernadorDao;
import br.com.spb.support.SpbUtils;

public class GovernadorWeb {
		private static String TXT;

		public static void cadastrar(HttpServletRequest request){ 
			try {
				String codPessoa = request.getParameter("codPessoa");
				String sigUf = request.getParameter("sigUf");
				String codMunicipioOrigem = request.getParameter("codMunicipioOrigem");
				String codPartido = request.getParameter("codPartido");
				String nome = request.getParameter("nome");
				String votos = request.getParameter("votos");
				
				Governador governador = new Governador();
				governador.setCodigo(SpbUtils.getLong(codPessoa));
				governador.setSigUf(sigUf);
				governador.setCodMunicipioOrigem(SpbUtils.getLong(codMunicipioOrigem));
				governador.setCodPartido(SpbUtils.getLong(codPartido));
				governador.setNome(nome);
				governador.setNumVotos(SpbUtils.getLong(votos)); 
				new GovernadorDao().save(governador); 
				
				request.getSession().setAttribute("msg","Governador Salvo com sucesso.");
				
			} catch (Exception e) {
				e.printStackTrace();
				request.getSession().setAttribute("erro","Erro ao tentar salvar o governador.");
			}
		}
		
		
		public static String pesquisarGovernadores(HttpServletRequest request){
			TXT = "";  
			String sigUf = request.getParameter("sigUf");
			if(sigUf != null  && !sigUf.trim().equals("")){
				preencherGovernadores(sigUf); 				
			}
			return TXT;
		}


		private static void preencherGovernadores(String sigUf){   
			for(Governador governador : new GovernadorDao().findByParametros(sigUf,null, null, null)){ 
				preencheGovernador(governador); 
			} 
		}
		
		/**
		 * @param request
		 * @return
		 */
		public static String pesquisarGovernadores( ){
			TXT = "";
			  
			preencherEstados(); 
			return TXT;
		}
		
		/**
		 * 
		 */
		private static void preencherEstados(){  
			for(Estado estado: new EstadoDao().findAll()){
				for(Governador governador : new GovernadorDao().findByParametros(estado.getSigUf(),null, null, null)){ 
					preencherGovernador(governador); 
				}
			} 
		}
		
		/**
		 * @param municipio
		 * @param codPartido
		 */
		private static void preencherGovernador(Governador governador){ 
			TXT += "" +
			"<tr>" +
			"	<td>"+ governador.getSigUf() +"</td> " +
			"	<td>"+ governador.getNome() +"</td> " +
			"	<td>"+ governador.getMunicipioOrigem().getNome() +"</td> " +
			"	<td>"+ governador.getPartido().getNome() +"</td> " +
			"	<td>"+ governador.getNumVotos() +"</td> " +
			"</tr>";
		 
		}
		
		/**
		 * @param municipio
		 * @param codPartido
		 */
		private static void preencheGovernador(Governador governador){ 
			if(cor.equals("linha1")){
				cor = "linha2";
			}else{
				cor = "linha1";
			}
			TXT += "" +
			"<tr class=\""+cor+"\">" +
			"	<td class=\""+cor+"\">"+ governador.getSigUf() +"</td> " +
			"	<td class=\""+cor+"\">"+ governador.getNome() +"</td> " +
			"	<td class=\""+cor+"\">"+ governador.getMunicipioOrigem().getNome() +"</td> " +
			"	<td class=\""+cor+"\">"+ governador.getPartido().getSigla() +"</td> " +
			"	<td style='text-align: right'; class=\""+cor+"\">"+ governador.getNumVotosFormatado() +"</td> " +
			"	<td style='text-align: right'; class=\""+cor+"\">" +
					getLinkAlterar(governador) +
					SpbUtils.getLinkExcluir(governador.getCodigo().toString(), governador.getNome(), "governador") +
					"</td> " +
			"</tr>";
		}


		private static String getLinkAlterar(Governador governador){
			String dados = "codPessoa="+governador.getCodigo().toString()+  
			               "&codMunicipioOrigem="+governador.getCodMunicipioOrigem().toString()+
			               "&codPartido="+governador.getCodPartido().toString()+
			               "&nome="+governador.getNome()+
			               "&votos="+governador.getNumVotos().toString()+
			               "&sigUf="+governador.getSigUf();
			
			return SpbUtils.getLinkAlterar("governadorForm.jsp?"+dados, "corpo");
		}
		
		private static String cor = "linha1";
}
